The present invention relates to computer-controlled automation of physical objects/equipment and in particular to the process of creating and modifying control programs for operating and monitoring automation processes and equipment in the industrial or other automation environments.
Modem industrial or other automation processes require the coordinated execution of several interdependent tasks by many different machines and pieces of equipment. The complexity of automation applications, the large number of signals and their interactions, as well as the increasing need for flexibility has resulted in the widespread adoption of programmable logic controllers (PLCs). These PLC computers control elaborate industrial equipment in accordance with a stored control program. During execution of the control program, the state of the controlled machinery is monitored by evaluating signals from one or more sensing devices (e.g., temperature or pressure sensors), and the machinery is operated (e.g., by activating or de-activating operative components) based on procedural instructions, the sensed signals, human operator input and, possibly, more complex processing.
Each automation application is unique to the demands of the process and therefore requires custom control programming. Furthermore, as the demands of the plant change over time, the corresponding control programs must be revised. This is especially true in flexible manufacturing systems in which major portions of the operation are changed frequently.
Control programming, and in particular PLC programming, is considered a specialized skill because of the knowledge required of industrial processes in general, the specific industrial application itself, and the programming language and tools used to create the control programs. The main challenge to the control programmer is to transform the desired operation and sequencing of the physical machines into appropriate instructions for the PLC.
A similar situation occurs in related application domains, such as building or home automation. Several devices and sensors, logically interconnected by means of a communication network, are to be controlled or coordinated in some fashion, such as via a centralized processor or distributed control architecture. Whether in home automation or industrial automation, the same task, producing programs that control and coordinate the operation of devices and that run on a particular target machine or architecture, is required.
In most cases, automation processes also require some form of user interface, commonly referred to as Human Machine Interface (HMI), for the purpose of displaying the state of the process as well as accepting input from operators, such as starting or stopping tasks. Again, because of the customized requirements of each application, these HMI programs must also be designed and programmed not only to accurately represent the process in an understandable format, but also to work closely with the underlying control program itself, e.g., obtaining data values, providing input data, initiating tasks, etc.
Ordinarily, these two programming tasks, the control programming and the user interface programming, are performed separately, using different sets of tools, and very often done by different sets of specialists. As such, constructing the control and visualization software for automation applications is often a time-consuming and expensive undertaking. The conventional approaches to addressing these two programming tasks are discussed further below.
With respect to the first task of control programming, several programming languages for industrial control have been developed over the years including proprietary languages, the set of IEC 1131 standard languages of the International Electrotechnical Commission, an international standards and conformity assessment body, for languages including LD (ladder diagram), FBD (function block diagram), SFC (sequential function chart), ST (structured chart) and IL (instruction list), and variations of those standards (incorporated hereing by reference). Furthermore, a wide variety of control programming tools are available today, ranging from basic low-level assemblers to integrated development environments. These control programming approaches are based on conventional procedural programming languages in which the programmer specifies instruction statements, functions, procedures. data structures, and so on. Some of these systems include forms of graphical representation such as block diagrams, or ladder logic graphs, which provide a level of abstraction to help the programmer deal with the complexities of the program. In general, with the present practice the programmer must make the mental translation from the required physical machine operations to the appropriate input/output signals and to the corresponding language constructs that will produce the correct control behavior.
With respect to the second task of programming or constructing the visual user interface front end for operating and monitoring the controlled process, there are several such tools available today. In user interface programming, the main task for the programmer is to lay out information displays that render data obtained from the process and (usually) to accept user input to affect the program operation (see, for example, Siemens SIMATIC WinCC Human Machine Interface, “SIMATIC Interactive Catalog” (herein incorporated by reference). Many such user interface systems provide text as well as graphical elements that can be positioned on the display screen and configured such that specific data signals are displayed accordingly, such as a bar graph to show temperature or pressure, etc. These systems also provide user interface elements for accepting user input such as pressing a button or entering text. When supported, the types of programming in user interface construction systems are primarily procedural languages or scripting languages used for such tasks as accessing data values, converting data to alternate forms for the purpose of display, setting internal data values or initiating specific actions. However, conventional user interface systems are not designed for creating or modifying control programs.
Accordingly, it is seen that the entire conventional approach in automation to programming, including the first and second programming tasks discussed above, that uses current conventional programming languages has a major disadvantage of being expensive and time consuming.
As seen from the above, it is desirable to have an alternative system for programming in automation environments, such that the control programming and the user interface programming are performed together, using one tool. It is also desirable to have computer-controlled automation performed more easily and economically, without the need for the expense and manpower of multiple specialists having different areas of particular expertise. This is particularly so in complex automation processes where situations change dynamically and an array of several different possible actions would be necessary (and which may require a user to intervene with the programmed action).